package com.sosky;

/**
 * 415. 字符串相加
 *
 * @author: huanghuanlong
 * @date: 2021/6/17 16:53
 * <p>
 * 给定两个字符串形式的非负整数num1 和num2，计算它们的和。
 * <p>
 * 提示：
 * num1 和num2的长度都小于 5100
 * num1 和num2 都只包含数字0-9
 * num1 和num2 都不包含任何前导零
 * 你不能使用任何內建 BigInteger 库，也不能直接将输入的字符串转换为整数形式
 */
public class Solution415 {
    public static void main(String[] args) {
        System.out.println(addStrings("11", "123"));
    }

    public static String addStrings(String num1, String num2) {
        int idx1 = num1.length() - 1;
        int idx2 = num2.length() - 1;
        int carry = 0;
        StringBuffer sb = new StringBuffer();
        while (idx1 >= 0 || idx2 >= 0 || carry != 0) {
            int x = idx1 >= 0 ? num1.charAt(idx1) - '0' : 0;
            int y = idx2 >= 0 ? num2.charAt(idx2) - '0' : 0;
            int result = x + y + carry;
            sb.append(result % 10);
            carry = result / 10;
            idx1--;
            idx2--;
        }
        return sb.reverse().toString();
    }
}
